'''
#1、自定义函数求一个学生4门课总成绩和平均值，要求利用关键字参数，并将求和以及平均成绩结果输出。

#求和
def sum_subject(a,b,c,d):
    return a+b+c+d

#求平均值
def average_subject(a,b,c,d):
    #ave1=sum_subject(a,b,c,d)
    return sum_subject(a,b,c,d)/4

#定义
chinese=int(input("语文成绩:"))
maths=int(input("数学成绩:"))
english=int(input("英语成绩:"))
physics=int(input("物理成绩:"))
sum2=sum_subject(chinese,maths,english,physics)
ave2=average_subject(chinese,maths,english,physics)
def subject(sum1,average):
    print(f'总成绩是{sum1},平均成绩是{average}')
subject(sum1=sum2,average=ave2)
'''


'''
#2、定义任意功能函数，要求两种传递方式1.值传递2.引用传递，观察两种形式区别。

#定义函数
def printf(obj):
    print("原值：",obj)
    obj+=obj

#调用函数
print("----值传递----")
str1="计科2303，董莹莹"
print("调用前：",str1)
printf(str1)
print("调用后：",str1)
print("----引用传递----")
str2=["计科2303","董莹莹"]
print("调用前：",str2)
printf(str2)
print("调用后：",str2)
'''


'''
#3、定义一个函数，判断一个数是否为素数。
num=int(input("输入一个数："))
for i in range(1,num,1):
    i=i+1
    if num==2:
        break
    if num%i==0:
        break;
if i==num:
    print("是素数")
else:
    print("不是素数")
'''


'''
#4、定义一个函数，返回三个数（从键盘输入的整数）中的最大值。

a=int(input("第一个数："))
b=int(input("第二个数："))
c=int(input("第三个数："))
max1=max(a,b,c)
print(max1,"是最大值")
'''

'''
#5、编写函数，使用递归方法实现1+2+3+.......100的和。

def sum_ret(a):
    if a==1:
        return 1
    return sum_ret(a-1)+a

print("1+2+3+.......100的和为：")
sum1=sum_ret(100)
print(sum1)
'''

'''
#6、编写匿名函数，实现两数相乘。

mul=lambda a,b:a*b
a=int(input("第一个数："))
b=int(input("第二个数："))
print("两数相乘为：",mul(a,b))
'''

'''
#7、键盘输入列表list=[1,2,3,4,5],要求利用map()方法实现对列表的映射，即将每个列表中的元素求平方，并输出新生成的列表内容。

list1=[1,2,3,4,5]

def f(x):
    return x*x

result=map(f,list1)

print(list1)
print(result)
print(list(result))
'''


'''
#8、输入一行字符，利用函数实现统计其中有多少个单词，其中单词与单词之间用空格分隔。

def count_words(s):
    return len([i for i in s.split(' ') if i])
def main():
    ch=str(input("请输入一行字符："))
    s=count_words(ch)
    print("单词数量为：", s)
main()
'''


#9、定义函数，实现求斐波那契数列（1,1,2,3,5,8.........）第n项的值，并求前n项的和。

def fib1(n):
    if(n==1):
        return[1]
    if(n==2):
        return[1,1]
    fibs=[1,1]
    for i in range(2,n):
        fibs.append(fibs[-1]+fibs[-2])
    return fibs
print(fib1(30))






















